With the advent of broadband network communications, computer users have grown increasingly accustomed to requesting and quickly receiving data from other, sometimes remote, computers coupled to a network. In some instances, however, users can continue to experience lengthy communication latency between the time a request for data is submitted and initial data packets are received and presented to the user. Where latency is perceived to be high by the user, the user can attribute the delay to poor processor, software, or network performance, in spite of claims by software and internet service providers that the products and services they offer result in “fast downloads” and other performance benefits.
Some computer networks, such as the world wide web (or “internet”), employ protocols that require certain initialization steps to be performed between devices on the network before data can be transmitted between the devices. For example, the internet employs transmission control protocol (TCP) to facilitate transmission of data packets between end systems on the internet A three-way TCP handshake can be required to initiate and synchronize communication between end systems seeking to transmit data over the internet. The three-way handshake can begin with the transmission of a synchronization (SYN) packet from a client end system to a server end system. Upon receiving the SYN packet, the server can respond to the client with a synchronization acknowledgment packet (SYN-ACK), notifying the client that the SYN packet has been received and accepted. After receiving the SYN-ACK packet, the client completes the three-way handshake by transmitting an acknowledgement packet (ACK) to the server before finally sending packets requesting data from the server. Considering that SYN, SYN-ACK, and ACK packets can be quite small, particularly in comparison to packets of content data transmitted between client and server, completion of a three-way handshake can often be quite quick. However, in other instances, a TCP handshake can add up to two or more seconds to the overall communication latency, for example, when SYN or SYN-ACK packets are dropped and need to be re-sent, where multiple hops are required to transmit packets between end systems (for example, in remote or underdeveloped locations), or where network traffic is high between the client and server.
Some decentralized networks, including the internet, decentralize management of network addressing and domain name associations, for example, through the domain name service (DNS). The internet, in order to make addressing more intuitive and human-friendly, also employs (DNS) as well as uniform resource locators (URLs). Each computer on the internet can have a domain name associated with it. These domain names can be meaningful words or phrases, allowing human users to easily indicate a source or destination relating to a request for data, such as hypertext markup language (HTML) files capable of being rendered by a web browser into a webpage. Domain names, such as those employed in DNS, may need to first be resolved, or translated, into their actual network addresses, such as an IP address, in order for a computer to understand a request for data from and/or initiate communication with computers associated with the domain names. A limited number of centralized root servers are employed by DNS to catalog which domain names are associated with which IP address. Additionally, thousands of decentralized name servers can also be employed to manage subsets of domain name associations, thereby limiting the need for resolution requests to be forwarded to root servers for the millions of domain resolution calls made each day. Typically a name server will receive a request from a client computer to resolve a given domain name. Sometimes the first name server contacted will be able to resolve the domain, although in other instances the first name server will need to redirect the client computer to further name servers for resolution of the domain name, in some instances even leading to a query of a root name server. Accordingly, resolution of a domain name can be as quick as a few milliseconds to as long as two or more seconds. To decrease the number of DNS queries, as well as the latency associated with these queries, caching of recent domain name resolutions has emerged as a popular technique for limiting calls to name servers.